home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Expert
/
Windows Expert.iso
/
windownt
/
trash.zip
/
TRASH.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-06-16
|
11KB
|
313 lines
/* TRASH Version 1.00.07 4/16/93 */
#include "windows.h"
#include "TRASH.h"
FARPROC lpAbortDlg, lpAbortProc;
PAINTSTRUCT ps;
POINT p;
RECT Rect;
HANDLE hAccTable;
HANDLE hBtNukecWnd;
HANDLE hBtNukeaWnd;
HANDLE hBtNuketWnd;
HANDLE hBtExitWnd;
HANDLE hBtNukeNowWnd;
HANDLE hBtNukeClsWnd;
HANDLE hBtNukeConWnd;
HANDLE hBtHelpWnd;
HANDLE hDrop;
HANDLE hDummy;
HANDLE hInst;
HDC hDC;
HPEN hPen;
HWND hwnd;
HWND hEditWnd;
BOOL bChanges=FALSE;
BOOL bVersion=FALSE;
DWORD dwResults;
DWORD dwStyle;
DWORD dwStyleEx;
LRESULT lResult;
UINT uFiles;
UINT uType;
UINT uType2;
int iTrashX;
int iTrashY;
int iTrashW;
int iTrashH;
int Heigth;
int Width;
char szTemp[128];
char szUserName[128];
int PASCAL WinMain(hInstance,hPrevInstance,lpCmdLine,nCmdShow)
HANDLE hInstance;
HANDLE hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;
{ MSG msg;
if ( !hPrevInstance ) {
WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon ( hInstance,"Icon" );
wc.hCursor = LoadCursor ( NULL, IDC_ARROW );
wc.hbrBackground = GetStockObject(LTGRAY_BRUSH);
wc.lpszMenuName = "TRASHMenu";
wc.lpszClassName = "TRASHWClass";
if(!RegisterClass(&wc))
return(FALSE);}
hInst=hInstance;
dwResults = 80;
GetUserName( (LPTSTR) & szUserName, (LPDWORD) & dwResults );
iTrashX = GetPrivateProfileInt ( ( LPCTSTR ) & szUserName, "TrashX", 10, "Solution.ini" );
iTrashY = GetPrivateProfileInt ( ( LPCTSTR ) & szUserName, "TrashY", 20, "Solution.ini" );
iTrashW = GetPrivateProfileInt ( ( LPCTSTR ) & szUserName, "TrashW", 620, "Solution.ini" );
iTrashH = GetPrivateProfileInt ( ( LPCTSTR ) & szUserName, "TrashH", 350, "Solution.ini" );
uType2 = GetPrivateProfileInt ( ( LPCTSTR ) & szUserName, "NukeType", 2, "Solution.ini" );
if (uType2 < 3)
uType = uType2 + 1000;
else
uType = 1002;
if (uType==NUKE_NOW)
wsprintf(szTemp, "%s", "TRASH Nuke Immediately");
if (uType==NUKE_LATER)
wsprintf(szTemp, "%s", "TRASH Nuke on Close");
if (uType==NUKE_CHOOSE)
wsprintf(szTemp, "%s", "TRASH Nuke on Confirm");
hAccTable=LoadAccelerators(hInst,"TRASHAcc");
dwStyle=WS_OVERLAPPEDWINDOW;
hwnd=CreateWindow("TRASHWClass", (LPTSTR)&szTemp,dwStyle, iTrashX, iTrashY, iTrashW, iTrashH, NULL,NULL,hInstance,NULL);
if(!hwnd)
return(FALSE);
dwStyle=WS_CHILD | WS_VISIBLE | LBS_HASSTRINGS |LBS_SORT | WS_VSCROLL | WS_HSCROLL ;
dwStyleEx=WS_EX_TOPMOST;
GetClientRect(hwnd,(LPRECT)&Rect);
Width=(Rect.right-Rect.left);
Heigth=(Rect.bottom-Rect.top);
hEditWnd=CreateWindowEx(dwStyleEx,"Listbox",NULL,dwStyle,0,47,Width,Heigth-47,hwnd,(HMENU)IDC_EDIT,hInst,NULL);
if ( !hEditWnd ) {
DestroyWindow ( hwnd ) ;
return ( 0 ) ; }
dwStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON;
hBtNukecWnd = CreateWindowEx ( dwStyleEx, "Button", "Remove File", dwStyle, 2, 2, 106, 20, hwnd, (HMENU)IDM_NUKEC, hInst, NULL );
hBtNukeaWnd = CreateWindowEx ( dwStyleEx, "Button", "Nuke 'em All", dwStyle, 2, 24, 106, 20, hwnd, (HMENU)IDM_NUKEA, hInst, NULL );
hBtNuketWnd = CreateWindowEx ( dwStyleEx, "Button", "Set Nuke Type", dwStyle, 110, 2, 106, 20, hwnd, (HMENU)IDM_NUKET, hInst, NULL );
hBtExitWnd = CreateWindowEx ( dwStyleEx, "Button", "Exit", dwStyle, 110, 24, 106, 20, hwnd, (HMENU)IDM_EXIT, hInst, NULL );
hBtNukeNowWnd = CreateWindowEx ( dwStyleEx, "Button", "Nuke Immediately", dwStyle, 218, 2, 136, 20, hwnd, (HMENU)IDM_NUKENOW, hInst, NULL );
hBtNukeClsWnd = CreateWindowEx ( dwStyleEx, "Button", "Nuke On Close", dwStyle, 218, 24, 136, 20, hwnd, (HMENU)IDM_NUKECLS, hInst, NULL );
hBtNukeConWnd = CreateWindowEx ( dwStyleEx, "Button", "Nuke On Confirm", dwStyle, 356, 2, 136, 20, hwnd, (HMENU)IDM_NUKECON, hInst, NULL );
hBtHelpWnd = CreateWindowEx ( dwStyleEx, "Button", "Help Me,Help Me", dwStyle, 356, 24, 136, 20, hwnd, (HMENU)IDM_HELP, hInst, NULL );
EnableWindow(hBtNukeNowWnd, FALSE);
EnableWindow(hBtNukeClsWnd, FALSE);
EnableWindow(hBtNukeConWnd, FALSE);
dwResults = GetVersion();
if (!dwResults && 0x80000000)
bVersion = TRUE;
DragAcceptFiles(hwnd, TRUE);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0)){
if(!TranslateAccelerator(hwnd,hAccTable,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);}}
return(msg.wParam);
}
long FAR PASCAL MainWndProc ( hWnd, message, wParam, lParam )
HWND hWnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
{ FARPROC lpProcAbout;
switch ( message ) {
case WM_COMMAND :
switch (LOWORD(wParam)){ /* THE <(LOWORD)> WAS ADDED FOR COMPATIBILITY WITH NT */
case IDM_ABOUT :
lpProcAbout = MakeProcInstance (About, hInst);
DialogBox (hInst, "AboutBox", hWnd, lpProcAbout);
FreeProcInstance (lpProcAbout);
break;
case IDM_HELP:
if (bVersion)
ShellExecute ( hWnd, NULL, "winhlp32.exe", " trash.hlp", "",SW_SHOW );
else
ShellExecute ( hWnd, NULL, "winhelp.exe", " trash.hlp", "", SW_SHOW ) ;
break ;
case IDM_NUKEC:
lResult = SendMessage(hEditWnd, LB_GETCURSEL, 0, 0);
SendMessage(hEditWnd, LB_DELETESTRING, (WPARAM) lResult, 0);
lResult = SendMessage(hEditWnd, LB_GETCOUNT, 0, 0);
if (lResult==0)
bChanges=FALSE;
break;
case IDM_NUKEA:
lResult = SendMessage(hEditWnd, LB_GETCOUNT, 0, 0);
while (lResult){
SendMessage(hEditWnd, LB_GETTEXT, 0, (LPARAM)(LPCTSTR)&szTemp);
SendMessage(hEditWnd, LB_DELETESTRING, 0, 0);
DeleteFile((LPSTR)&szTemp);
lResult--;}
bChanges=FALSE;
break;
case IDM_NUKET:
EnableWindow(hBtNukeNowWnd, TRUE);
EnableWindow(hBtNukeClsWnd, TRUE);
EnableWindow(hBtNukeConWnd, TRUE);
break;
case IDM_NUKENOW:
EnableWindow(hBtNukeNowWnd, FALSE);
EnableWindow(hBtNukeClsWnd, FALSE);
EnableWindow(hBtNukeConWnd, FALSE);
wsprintf(szTemp, "%s", "TRASH Nuke Immediately");
SetWindowText(hWnd, (LPTSTR)&szTemp);
uType = NUKE_NOW;
break;
case IDM_NUKECLS:
EnableWindow(hBtNukeNowWnd, FALSE);
EnableWindow(hBtNukeClsWnd, FALSE);
EnableWindow(hBtNukeConWnd, FALSE);
wsprintf(szTemp, "%s", "TRASH Nuke on Close");
SetWindowText(hWnd, (LPTSTR)&szTemp);
uType = NUKE_LATER;
break;
case IDM_NUKECON:
EnableWindow(hBtNukeNowWnd, FALSE);
EnableWindow(hBtNukeClsWnd, FALSE);
EnableWindow(hBtNukeConWnd, FALSE);
wsprintf(szTemp, "%s", "TRASH Nuke on Confirm");
SetWindowText(hWnd, (LPTSTR)&szTemp);
uType = NUKE_CHOOSE;
break;
case IDM_EXIT :
if (uType == NUKE_LATER){
lResult = SendMessage(hEditWnd, LB_GETCOUNT, 0, 0);
while (lResult){
SendMessage(hEditWnd, LB_GETTEXT, 0, (LPARAM)(LPCTSTR)&szTemp);
SendMessage(hEditWnd, LB_DELETESTRING, 0, 0);
DeleteFile((LPSTR)&szTemp);
lResult--;}
bChanges=FALSE;}
if (bChanges){
ShowWindow (hWnd, SW_RESTORE);
MessageBox(hWnd, "There are still Files in the Trash", "Files Pending", MB_OK);
return (FALSE);}
p.x = 0;
p.y = 0;
ClientToScreen ( hWnd, (LPPOINT) & p ) ;
iTrashX = p.x -4 ;
iTrashY = p.y -42 ;
GetClientRect ( hwnd, ( LPRECT) &Rect ) ;
iTrashW = ( Rect.right - Rect.left ) + 8 ;
iTrashH = ( Rect.bottom - Rect.top ) + 46;
wsprintf ( szTemp, "%i", 1);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "..", (LPCTSTR) & szTemp, "Solution.ini");
wsprintf ( szTemp, "%i", iTrashX);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "TrashX", (LPCTSTR) & szTemp, "Solution.ini");
wsprintf ( szTemp, "%i", iTrashY);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "TrashY", (LPCTSTR) & szTemp, "Solution.ini");
wsprintf ( szTemp, "%i", iTrashH);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "TrashH", (LPCTSTR) & szTemp, "Solution.ini");
wsprintf ( szTemp, "%i", iTrashW);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "TrashW", (LPCTSTR) & szTemp, "Solution.ini");
wsprintf ( szTemp, "%i", uType - 1000);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "NukeType", (LPCTSTR) & szTemp, "Solution.ini");
DestroyWindow ( hWnd ) ;
break ;
default :
return ( DefWindowProc ( hWnd, message, wParam, lParam ) ) ; }
return (0);
case WM_PAINT:
hDC = BeginPaint(hwnd, (LPPAINTSTRUCT)&ps);
MoveToEx(hDC, 0, 46, NULL);
hPen = SelectObject(hDC, (HGDIOBJ)GetStockObject(BLACK_PEN));
LineTo(hDC, 620, 46);
EndPaint(hwnd, (LPPAINTSTRUCT)&ps);
break;
case WM_DROPFILES:
if(uType == NUKE_NOW)
bChanges=FALSE;
else
bChanges=TRUE;
hDrop = (HANDLE) wParam;
uFiles = DragQueryFile (hDrop, 0xffffffff, (LPTSTR) &szTemp, 128);
while (uFiles){
DragQueryFile (hDrop, uFiles-1, (LPTSTR) &szTemp, 128);
if(uType == NUKE_NOW)
DeleteFile ( ( LPSTR )&szTemp ) ;
else
SendMessage (hEditWnd, LB_ADDSTRING, 0, (LPARAM)(LPSTR)&szTemp);
uFiles--;}
DragFinish (hDrop);
break;
case WM_SIZE:
MoveWindow ( hEditWnd, 0, 47, LOWORD ( lParam ), HIWORD ( lParam ) - 47, TRUE ) ;
break;
case WM_SETFOCUS:
SetFocus(hEditWnd);
break;
case WM_QUERYENDSESSION:
if (uType == NUKE_LATER){
lResult = SendMessage(hEditWnd, LB_GETCOUNT, 0, 0);
while (lResult){
SendMessage(hEditWnd, LB_GETTEXT, 0, (LPARAM)(LPCTSTR)&szTemp);
SendMessage(hEditWnd, LB_DELETESTRING, 0, 0);
DeleteFile((LPSTR)&szTemp);
lResult--;}
bChanges=FALSE;}
if (bChanges){
ShowWindow (hWnd, SW_RESTORE);
MessageBox(hWnd, "There are still Files in the Trash", "Files Pending", MB_OK);
return (FALSE);}
wsprintf ( szTemp, "%i", uType-1000);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "NukeType", (LPCTSTR) & szTemp, "Solution.ini");
return (TRUE);
break;
case WM_CLOSE :
if (uType == NUKE_LATER){
lResult = SendMessage(hEditWnd, LB_GETCOUNT, 0, 0);
while (lResult){
SendMessage(hEditWnd, LB_GETTEXT, 0, (LPARAM)(LPCTSTR)&szTemp);
SendMessage(hEditWnd, LB_DELETESTRING, 0, 0);
DeleteFile((LPSTR)&szTemp);
lResult--;}
bChanges=FALSE;}
if (bChanges){
ShowWindow (hWnd, SW_RESTORE);
MessageBox(hWnd, "There are still Files in the Trash", "Files Pending", MB_OK);
return (FALSE);}
wsprintf ( szTemp, "%i", uType);
WritePrivateProfileString ( ( LPCSTR ) & szUserName, "NukeType", (LPCTSTR) & szTemp, "Solution.ini");
DestroyWindow ( hWnd ) ;
break ;
case WM_DESTROY :
PostQuitMessage ( 0 ) ;
break ;
default :
return ( DefWindowProc ( hWnd, message, wParam, lParam ) ) ; }
return ( 0 ) ;
}
BOOL FAR PASCAL About ( hDlg, message, wParam, lParam )
HWND hDlg ;
unsigned message ;
WORD wParam ;
LONG lParam ;
{ switch ( message ) {
case WM_INITDIALOG :
return ( TRUE ) ;
case WM_COMMAND :
if ( wParam == IDOK || wParam == IDCANCEL ) {
EndDialog( hDlg, TRUE ) ;
return ( TRUE ) ; }
return ( TRUE ) ; }
return ( FALSE ) ;
}